import type { CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'
import { dict } from '@fast-crud/fast-crud'
import { addRequest, delRequest, editRequest, pageRequest } from './api'

/**
 * 定义行数据模型
 * 如果你嫌定义数据模型麻烦，可以删掉此处，把下面出现的Row用any代替即可
 */
// export type Row = {
//   id: string
//   userName: string
//   createdDate: string
//   password: string
// }

/**
 * 定义一个CrudOptions生成器方法
 */
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
  return {
    crudOptions: {
      // 在这里自定义你的crudOptions配置
      request: {
        pageRequest,
        addRequest,
        editRequest,
        delRequest,
      },
      rowHandle: {
        fixed: 'right',
        width: 170,
      },
      table: {
        tableVersion: 'v2',
        fixed: true,
      },
      pagination: {
        'page-sizes': [10, 20, 50, 100, 999999],
      },
      //这里定义两个字段
      columns: {
        id: {
          title: 'ID',
          search: {
            show: true,
            component: {
              //查询 使用选择框组件，并且是可以清除的
              name: 'el-input',
              clearable: true,
            },
          },
          column: {
            width: 200,
          },
          addForm: { show: false }, // 不在新增表单中展示
          editForm: { show: false }, // 不在编辑表单中展示
        },
        name: {
          title: '名',
          type: 'text', //字段类型，fs会根据字段类型，生成出一些默认配置
          search: { show: true },
          column: {
            width: 200,
            //表格列的一些配置
            resizable: true,
          },
          component: {
            clearable: true,
          },
          form: {
            rules: [{ required: true, message: '名不能为空', trigger: 'blur' }],
          },
        },
        code: {
          title: '代码',
          type: 'text', //字段类型，fs会根据字段类型，生成出一些默认配置
          search: { show: true },
          column: {
            width: 100,
            //表格列的一些配置
            resizable: true,
          },
          component: {
            clearable: true,
          },
          form: {
            rules: [{ required: true, message: '代码不能为空', trigger: 'blur' }],
          },
        },
        hign: {
          title: '最高价',
          type: 'text', //字段类型，fs会根据字段类型，生成出一些默认配置
          search: { show: true },
          column: {
            width: 100,
            //表格列的一些配置
            resizable: true,
          },
          component: {
            clearable: true,
          },
          form: {
            rules: [{ required: true, message: '最高价不能为空', trigger: 'blur' }],
          },
        },
        low: {
          title: '最低价',
          type: 'text', //字段类型，fs会根据字段类型，生成出一些默认配置
          search: { show: true },
          column: {
            width: 100,
            //表格列的一些配置
            resizable: true,
          },
          component: {
            clearable: true,
          },
          form: {
            rules: [{ required: true, message: '最低价不能为空', trigger: 'blur' }],
          },
        },
        last: {
          title: '最新价',
          type: 'text', //字段类型，fs会根据字段类型，生成出一些默认配置
          search: { show: true },
          column: {
            width: 100,
            //表格列的一些配置
            resizable: true,
          },
          component: {
            clearable: true,
          },
          form: {
            rules: [{ required: true, message: '最新价不能为空', trigger: 'blur' }],
          },
        },
        type: {
          column: {
            width: 100,
            //表格列的一些配置
            resizable: true,
          },
          title: '类型',
          type: 'dict-select',
          dict: dict({
            data: [
              { value: 1, label: '深' },
              { value: 2, label: '沪' },
            ],
          }),
        },
      },
    },
  }
}
